home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / shells / kiss-0.11 / kiss-0 / kiss / src / domkdir.c < prev    next >
C/C++ Source or Header  |  1995-03-23  |  1KB  |  66 lines

  1. #include "kiss.h"
  2.  
  3. int domkdir (Stringstack s)
  4. {
  5.     register int
  6.     makeparts = 0,
  7.     i,
  8.     opt,
  9.     ret = 0;
  10.     char
  11.     buf [FILENAMELEN];
  12.     struct stat
  13.     statbuf;
  14.     register char
  15.     *cp;
  16.  
  17.     while ( (opt = getopt (s.nstr, s.str, "ph")) != -1 )
  18.     if (opt == 'p')
  19.         makeparts++;
  20.     else
  21.         error ("Bad commandline.\n"
  22.            "Usage: %s [-p] directory(~ies)\n"
  23.            "Where:\n"
  24.            "    -p: make full path, including intermediate dirs\n"
  25.            "    directories: dirs to create\n", progname);
  26.  
  27.     for (i = optind; i < s.nstr; i++)
  28.     {
  29.     if (! stat (s.str [i], &statbuf))
  30.         ret += warning ("\"%s\" already exists", s.str [i]);
  31.     else if (makeparts)
  32.     {
  33.         strcpy (buf, s.str [i]);
  34.         if ( (cp = strtok (buf, "/")) )
  35.         {
  36.         if (stat (cp, &statbuf) && mkdir (cp, CREATEFLAGS))
  37.         {
  38.             ret += warning ("failure while creating subpath \"%s\"",
  39.                     cp);
  40.             break;
  41.         }
  42.         chdir (cp);
  43.         while ( (cp = strtok (NULL, "/")) )
  44.         {
  45.             if (stat (cp, &statbuf) && mkdir (cp, CREATEFLAGS))
  46.             {
  47.             ret += warning ("failure while creating subpath \"%s\"",
  48.                     cp);
  49.             break;
  50.             }
  51.             chdir (cp);
  52.         }
  53.         }
  54.             
  55.     }
  56.     else
  57.     {
  58.         if (mkdir (s.str [i], CREATEFLAGS))
  59.         ret += warning ("failure while creating dir \"%s\"",
  60.                 s.str [i]);
  61.     }
  62.     }
  63.  
  64.     return (ret);
  65. }
  66.